package org.birrap.ejb;

import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.NoResultException;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.birrap.entities.CervezasT;


@Stateless
public class CervezasTBean implements CervezasTBeanLocal {

    @PersistenceContext(unitName = "BirrApp-ejbPU")
    private EntityManager em;
     
    @Override
    public List<CervezasT> findAll() {
       Query query = em.createNamedQuery("CervezasT.findAll");
       
       return (List<CervezasT>)query.getResultList();
    }

    @Override
    public CervezasT findByIdCerveza(Integer id) {
      CervezasT res = null;
      Query query = em.createNamedQuery("CervezasT.findByIdCerveza").setParameter("id", id);
      
      try{
          res = (CervezasT)query.getSingleResult();
      }
      catch (NoResultException e){
          System.out.println("No existe el id");
      }
      return res;
    }

    @Override
    public List<CervezasT> findByMarca(String marca) {
      List<CervezasT> res = null;
      Query query = em.createNamedQuery("CervezasT.findByMarca")
              .setParameter("marca","%" + marca+ "%");
      
      try{
          res = (List<CervezasT>)query.getResultList();
      }
      catch (NoResultException e){
          System.out.println("No existe la marca");
      }
      return res;
    }

    @Override
    public List<CervezasT> findByTipo(String tipo) {
      List<CervezasT> res = null;
      Query query = em.createNamedQuery("CervezasT.findByTipo")
              .setParameter("tipo","%" + tipo+ "%");
      
      try{
          res = (List<CervezasT>)query.getResultList();
      }
      catch (NoResultException e){
          System.out.println("No existe el tipo");
      }
      return res;
    }

    @Override
    public CervezasT insert(CervezasT cerveza) {
        return update(cerveza);
    }

    @Override
    public CervezasT update(CervezasT cerveza) {
        return em.merge(cerveza);
    }

    @Override
    public boolean remove(CervezasT cerveza) {
        boolean correcto = false;
        int resultado = 0;
        
        Query query = em.createNamedQuery("CervezasT.removeByIdCerveza")
                         .setParameter("idCerveza", cerveza.getIdCerveza());
        
        resultado = query.executeUpdate();
        
        if (resultado > 0)
        {
            correcto = true;
        }
        
        return correcto;
    }


}
